﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using Filmy.Kontroler.BazaDanych;

namespace Filmy
{
    public partial class FNowyFilm : Form
    {
        public FNowyFilm()
        {
            InitializeComponent();
            //wylaczPrzyciski();
            Icon ic = new Icon(Application.StartupPath + "\\Resources\\Film.ico");
            this.Icon = ic;
            notifyIcon1.Icon = ic;
            try
            {
                filmyTytuly = new FilmyTytuly();
                dataGridView1.DataSource = filmyTytuly.dajTabele();
                dataGridView1.Columns[0].Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            dg = new MojDataGrid();
            interfaceStart();               
        }

        private void wylaczPrzyciski()
        {
            TsBtDodaj.Enabled = false;
            TsBtEdytuj.Enabled = false;
            TsBtSzukaj.Enabled = false;
            TsBtUsun.Enabled = false;
            TsBtUsFil.Enabled = false;
            BtSzNow.Enabled = false;
            odświeżToolStripMenuItem.Enabled = false;
        }

        private void wlaczPrzyciski()
        {
            TsBtDodaj.Enabled = true;
            TsBtEdytuj.Enabled = true;
            TsBtSzukaj.Enabled = true;
            TsBtUsun.Enabled = true;
            TsBtUsFil.Enabled = true;
            BtSzNow.Enabled = true;
            odświeżToolStripMenuItem.Enabled = true;
        }

        private void interfaceStart()
        {         
            MenuItemy(tytulToolStripMenuItem, tssbKryt);
            toolStrip1.Items.Add(ts);
            ts.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TsTbPar_KeyPress);
            ts.Text = "";
            if (!Directory.Exists(Application.StartupPath + "//Obrazy"))
            {
                Directory.CreateDirectory(Application.StartupPath + "//Obrazy");
            }
        }

        FilmyTytuly filmyTytuly;
        ToolStripSpringTextBox ts = new ToolStripSpringTextBox();
        MojDataGrid dg;

        //Wwyszukanie plikow .torrent w katalogu temp
        private void BtSzNow_Click(object sender, EventArgs e)
        {
            AutoTor at = new AutoTor();
            if (!at.szukajTor())
            {
                MessageBox.Show("Nic nie znaleziono", "Komunikat", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
                odswiez();
        }


        private void odswiez()
        {
            try
            {
                dataGridView1.DataSource = filmyTytuly.dajTabele();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void TsBtSzukaj_Click(object sender, EventArgs e)
        {
            szukaj();
        }

        //sbsluga kliknieca klawiasz enter na polu filtra
        private void ts_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (dataGridView1.RowCount > 0)
            {
                if (e.KeyChar == (char)13)
                {
                    szukaj();
                }
            }
        }

        //wyswietlenie formularza do dodania nowego filmu
        private void TsBtDodaj_Click(object sender, EventArgs e)
        {
            Fnowy f_nowy = new Fnowy();
            f_nowy.ShowDialog();
            if (f_nowy.DialogResult == DialogResult.OK)
            {
                odswiez();
                //dataGridView1.Refresh();
            }
        }

        //usuniecie wybranych rekordow
        private void TsBtUsun_Click_1(object sender, EventArgs e)
        {
            DialogResult msg;
            if (dataGridView1.RowCount > 0 && dataGridView1.SelectedRows.Count > 0)
            {
                msg = MessageBox.Show("Czy napewno chcesz usunąc?", "Niebezpieczna operacja", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
                if (msg == DialogResult.Yes)
                {
                    try
                    {
                        filmyTytuly.deleteRow(dg.dajZaznaczone(dataGridView1.SelectedRows));
                        //dataGridView1.Refresh();
                        odswiez();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }

        //wyswietlenie formularza do edycji wybranego rekordu
        private void TsBtEdytuj_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1 && dataGridView1.RowCount > 0)
            {
                try
                {
                    edycja();
                }
                catch
                {
                    MessageBox.Show("Nie można edytować pustego rekordu", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else if (dataGridView1.SelectedRows.Count != 1 && dataGridView1.RowCount != 0)
            {
                MessageBox.Show("Nie można edytować wielu rekordów", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        //wyswietlenie formularza edycji do kliknietego rekordu
        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            //wylaczPrzyciski();
            if (dataGridView1.RowCount > 0)
            {
                try
                {
                    edycja();
                }
                catch
                {
                    MessageBox.Show("Błąd", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        //zminimalizowanie porgramu do tray'a
        private void FNowyFilm_Resize(object sender, EventArgs e)
        {
            if (WindowState == FormWindowState.Minimized)
            {
                notifyIcon1.Visible = true;
                Hide();
                notifyIcon1.ShowBalloonTip(100);
            }

        }

        //powrot programu z tray'a
        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            Show();
            notifyIcon1.Visible = false;
            WindowState = FormWindowState.Normal;
        }

        //obsluga klikniecia enter na polu filtra
        private void TsTbPar_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (dataGridView1.RowCount > 0)
            {
                if (e.KeyChar == (char)13)
                {
                    szukaj();
                }
            }
        }

        //wyszukanie rekorow zgodnych z zadanym filtrem
        private void szukaj()
        {
            try
            {
                DataTable dt = filmyTytuly.dajTabele(tssbKryt.Tag.ToString(), ts.Text);
                dataGridView1.DataSource = filmyTytuly.dajTabele(tssbKryt.Tag.ToString(), ts.Text);
                if (!(ts.Items.Contains(ts.Text)))
                    ts.Items.Add(ts.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //powrot do wszystkich rekordow
        private void TsBtUsFil_Click(object sender, EventArgs e)
        {
            try
            {
                ts.Text = "";
                odswiez();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //zamkniecie forma
        private void FNowyFilm_FormClosed(object sender, FormClosedEventArgs e)
        {
            wyczysc();
            if (this.Owner.Visible == false)
                Application.Exit();
        }


        //wyczyszczenie danych tymczasowych, pobranych obrazkow
        private void wyczysc()
        {
            try
            {
                string[] dodel;
                dodel = Directory.GetFiles(Application.StartupPath + "\\Obrazy\\");
                foreach (string d in dodel)
                    File.Delete(d);
            }
            catch /*(Exception ex)*/
            {
            }
        }

        private void oProgramieToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Turbo Filmy® 2010 Dominik Grondziowski \n\n Tester: Beat :*", "O programie", MessageBoxButtons.OK, MessageBoxIcon.Information);
            filmyTytuly.writeXML();
        }

        //zmiana wlasciwosci checked przy kryterium wyszukiwania
        private void MenuItemy(ToolStripMenuItem tsmi, ToolStripSplitButton tsb)
        {
            tytulToolStripMenuItem.Checked = false;
            tytulOrgToolStripMenuItem.Checked = false;
            gatunekToolStripMenuItem.Checked = false;
            rokToolStripMenuItem.Checked = false;
            urzytkownikToolStripMenuItem1.Checked = false;
            wersjaToolStripMenuItem.Checked = false;
            reżyserToolStripMenuItem.Checked = false;
            krajPochodzeniaToolStripMenuItem.Checked = false;
            tsmi.Checked = true;
            tsb.Text = tsmi.Text;
            tsb.Tag = tsmi.Tag;
        }

        private void tytulOrgToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(tytulOrgToolStripMenuItem, tssbKryt); 
        }

        private void tytulToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(tytulToolStripMenuItem, tssbKryt); 
        }

        private void gatunekToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(gatunekToolStripMenuItem, tssbKryt); 
        }

        private void rokToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(rokToolStripMenuItem, tssbKryt); 
        }

        private void wersjaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(wersjaToolStripMenuItem, tssbKryt); 
        }

        private void urzytkownikToolStripMenuItem1_Click_1(object sender, EventArgs e)
        {
            MenuItemy(urzytkownikToolStripMenuItem1, tssbKryt); 
        }

        //otwrcie forma do edycji
        private void edycja()
        {
            if (dataGridView1.RowCount > 0)
            {
                int row = 0;
                int col = 0;
                row = dataGridView1.CurrentCell.RowIndex;
                col = dataGridView1.CurrentCell.ColumnIndex;
                Fnowy f_nowy = new Fnowy(dg.dajZaznaczoneId(dataGridView1.SelectedRows));
                f_nowy.ShowDialog();
                if (f_nowy.DialogResult == DialogResult.OK)
                {
                    this.Refresh();
                    dataGridView1.CurrentCell = dataGridView1[col, row];
                    dataGridView1.DataSource = filmyTytuly.dajTabele();
                }
                else
                {
                    //wlaczPrzyciski();
                }
            }
        }

        //odsiwez
        private void ReConn_Click(object sender, EventArgs e)
        {
             ts.Text = "";
             odswiez();
             //dataGridView1.Refresh();
        }

        //wysiwtlenie instrukcji
        private void instrukcjaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start(Application.StartupPath + "\\Resources\\f1.txt");
        }

        //wylogownianie
        private void wylogujToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Owner.Visible = true;
            this.Close();
        }

        private void zamknijToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            this.Close();
            Application.Exit();
        }

        private void krajPochodzeniaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(krajPochodzeniaToolStripMenuItem, tssbKryt); 
        }

        private void reżyserToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MenuItemy(reżyserToolStripMenuItem, tssbKryt); 
        }
    }
}
